如果我們想要知道模型結果的成效,我們會設定成效或說性能指標(metrics)來看其結果。今天我們會分成下面三點來介紹:
Keras 官網上的介紹是:
A metric is a function that is used to judge the performance of your model.
Metric functions are similar to loss functions, except that the results from evaluating a metric are not used when training the model. Note that you may use any loss function as a metric.
翻譯一下,我們可以得到三個資訊:
進階理解後,我們可以濃縮成兩點問題:
這邊我想先提損失函數(loss function)跟指標(metric)的差異,主要是因為我們想找的指標不一定跟機器修改的方向一樣。
譬如說我們想知道正確率這個指標,但正確率(反面說就是錯誤率)其實不大適合用在分類問題當損失函數讓機器修正。我們可以看一下Tommy Huang老師在機器/深度學習: 基礎介紹-損失函數(loss function)一文中提到的這個例子:
Model1 跟 Model2 的錯誤率都一樣,但顯然 Model2 呈現出的結果會比較好(機率區別較大)。
引用一下作者的結論:
單看錯誤率比較不出此兩模型的差異
這樣後續模型學習時,比較難得到較好的學習方向,因為用錯誤率得到只知道此筆資料判別錯誤,但模型不會知道現在的模型錯的很多還是很少,這樣模型在學習時根本不知道最佳的模型在那的方向,也不知道要更新多少。
所以我們可以拿損失函數(loss function)當指標,但不用指標(metric)結果讓機器做修正。
ps.損失函數(loss function)可見 [DAY9] 評估 NN model 好壞的指標-損失函數(loss function) 介紹
所以成效(performance)是什麼?是我們預期得到的一些結果。我們常會使用統計的混淆矩陣(confusion matrix)[註1]去產生一些成效指標,如正確率(Accuracy)。
這邊不提混淆矩陣及其他常用指標(有興趣的可以看備註了解!),這邊先提正確率這個比較容易理解的指標。
譬如說我們手寫數字辨識答案是[1,2,3,4,5],而系統預測[0,2,4,4,5],這樣正確率=3/5=60%
Keras 提供不同正確率的套件,可以看一下自己的資料形式去做相對應使用。→ https://keras.io/api/metrics/
神經網路模型(NN model)用損失函數(loss function)去判斷修改成回歸誤差最小或分類效果最好的情形,而我們用指標(metric)去闡述資料的結果成效(performance)。
用 Keras 疊一個神經網路需要先知道的幾個名詞 第5天(/6 days) 完成。
[註1] 混淆矩陣推薦看 機器學習\統計方法: 模型評估-驗證指標(validation index) 這一篇文章,裡面介紹了很多實用指標跟算法。
發現這段沒有寫到混淆矩陣 confusion matrix
我們很常用 confusion matrix 這個指標去看錯誤細節等